package com.tianjin.design.composite;

/**
 *
 * @author tianjin
 *
 * 2023年6月12日
 * TODO 组合模式# 结构型模式
 * 1、解释：将对象组合成树形结构以表示部分-整体的层次结构，组合模式使得用户对单个对象和组合对象的使用具有一致性。
 * 2、适用场景：需求中体现部分与整体层次的结构时或者希望用户忽略组合对象和单个对象的不同，统一的使用组合结构中的所有对象时，可以考虑组合模式
 * 3、组合模式让客户端可以一致的使用组合结构和单个对象
 * 4、代码实现：
 * 	4-1 组合模式解决的主要问题是解决部分和整体之间的关系，使得组合或者部分在客户端使用时都具有一致性，所以首先需要定义接口来规范行为 Component
 * 	4-2 根据是否是叶子接点，可以分为两类组件 Composite 和 Leaf，leaf 无法添加下级组件
 */
public class Test {


	public static void main(String[] args) {


		CompanyComponent company = new CompanyComposite();
		company.setName("-root");

		CompanyComponent AA = new CompanyComposite();
		AA.setName("--AA");
		company.add(AA);

		CompanyComponent BB = new CompanyComposite();
		BB.setName("--BB");
		company.add(BB);

		company.toString();

	}
}
